package screen;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

import cjh.Admin_Page_Main;
import cjh.Stu_Page_Main;

import dao.JDBC_SQL;
import dao.JDBC_ConnClose;



public class LoginMain {
	static Scanner sc = new Scanner(System.in);
	static JDBC_SQL sql = new JDBC_SQL();
	public static String logIdVO = null;	// 조건문안에  넣기 위하여 static으로 logidvo를 선언해둠
	static String logPwVO = null;			// // 조건문안에  넣기 위하여 static으로 logpwvo를 선언해둠
	static Connection conn = null;
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;	
	 
	// static 메서드를 boolean(참,거짓) 타입 으로 생성하여 문장을 실행한뒤 참 거짓으로 값을 반환한다.  
	public static boolean loginScreen( String idVO, String pwVO) { 	// 문자열 idVO,pwVO를 입력받음

		boolean result = false;	// 최종적으로 반환한 result 함수를 boolean 타입으로 선언, 초기값은 false
		
		// while 이라는 문은 값이 참인 경우 실행이됨
		while ( true ) { 		// true값을 입력받았음으로 자동실행 
			
			// =과 , ==의 차이
			
			// 1. = 의 경우 
			// a = b 일경우 a값에 b를 대입함
			// 따라서 a값에는 b값이 입력이 됨
			
			// 2. == 의 경우 
			// a == b 일경우 a == b 가 값이 같는지 비교를 함
			// 결과값은 true와 false로 반환됨, 값변동 없음 
			
			
			
			
			logIdVO = idVO;		// LogIdVO 에 idVO 값을대입
			logPwVO = pwVO;		// LogpwVO 에 pwVO 값을대입
			// try문 실행 (예외) 
			try {
				
				conn = JDBC_ConnClose.openDataBase();	// JDBC_ConnClose안에 있는 openDataBase()메서드를 호출

				pstmt = conn.prepareStatement(sql.LoginAdminSelect);	// sql.LoginAdminSelect을 호출
				pstmt.setString( 1, logIdVO );		// 첫번쨰 ? 값을 LogIDVO를 대입함
				pstmt.setString( 2, logPwVO );		// 두번쨰 ? 값을 LogPWVO를 대입함
				rs = pstmt.executeQuery();			// 위 값을 입력받은 sql.LoginAdminSelect를 데이터 베이스에 호출 
		
				
				if ( rs.next() ) {
						result = true;
						new Admin_Page_Main();
					return result;				
					
				} else {
					pstmt = conn.prepareStatement(sql.LoginProfSelect );
					pstmt.setString( 1, logIdVO );
					pstmt.setString( 2, logPwVO );
					rs = pstmt.executeQuery();
					if ( rs.next () ) {
						System.out.println( rs.getString( 1 ) + " 교수님 로그인을 환영합니다." );
						System.out.println("교수 업무 화면으로 이동합니다.");
						ProfessorMain.ProfessorScreen();
						break;
					} else { 
						pstmt = conn.prepareStatement( sql.LoginStdSelect );
						pstmt.setString( 1, logIdVO );
						pstmt.setString( 2, logPwVO );
						rs = pstmt.executeQuery();
						if ( rs.next () ) {
							
							result = true;
							new Stu_Page_Main();
							return result;
						} 
					}
				}
			} catch ( Exception e ) {
				e.printStackTrace();
			} finally {
				JDBC_ConnClose.closeDataBase(conn, pstmt, rs);
			}
			System.out.println( "아이디 또는 비밀번호를 잘못입력하셨습니다. 다시 확인해주세요." );
		}
		// 추가
		return false;
	}
}	
	
	/*

public class LoginMain {
	static Scanner sc = new Scanner(System.in);
	static JDBC_SQL sql = new JDBC_SQL();
	public static String logIdVO = null;
	static String logPwVO = null;
	static Connection conn = null;
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;	
	
	public static void loginScreen() {
		System.out.println("성적 관리 시스템 입니다.");
		while ( true ) {
			System.out.print("로그인 아이디를 입력하세요 : ");
			logIdVO = sc.next();
			System.out.print("비밀번호를 입력하세요 : ");
			logPwVO = sc.next();
			try {
				conn = JDBC_ConnClose.openDataBase();
				pstmt = conn.prepareStatement( sql.LoginAdminSelect );
				pstmt.setString( 1, logIdVO );
				pstmt.setString( 2, logPwVO );
				rs = pstmt.executeQuery();
				if ( rs.next() ) {
					System.out.println( rs.getString( 1 ) + " 관리자님 로그인을 환영합니다." );
					System.out.println("관리자 업무 화면으로 이동합니다.");
					AdminMain.AdminScreen();
					break;
				} else {
					pstmt = conn.prepareStatement(sql.LoginProfSelect );
					pstmt.setString( 1, logIdVO );
					pstmt.setString( 2, logPwVO );
					rs = pstmt.executeQuery();
					if ( rs.next () ) {
						System.out.println( rs.getString( 1 ) + " 교수님 로그인을 환영합니다." );
						System.out.println("교수 업무 화면으로 이동합니다.");
						ProfessorMain.ProfessorScreen();
						break;
					} else { 
						pstmt = conn.prepareStatement( sql.LoginStdSelect );
						pstmt.setString( 1, logIdVO );
						pstmt.setString( 2, logPwVO );
						rs = pstmt.executeQuery();
						if ( rs.next () ) {
							System.out.println( rs.getString( 1 ) + " 학생 로그인을 환영합니다." );
							System.out.println("학생 업무 화면으로 이동합니다.");
							StudentMain.StudentScreen();
							break;
						} 
					}
				}
			} catch ( Exception e ) {
				e.printStackTrace();
			} finally {
				JDBC_ConnClose.closeDataBase(conn, pstmt, rs);
			}
			System.out.println( "아이디 또는 비밀번호를 잘못입력하셨습니다. 다시 확인해주세요." );
		}

	}
}	

*/